package com.lh.tams.dao.system;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.lh.tams.dao.base.HibernateBaseDao;
import com.lh.tams.domain.TamsPerson;
import com.lh.tams.domain.TamsRole;
import com.lh.tams.util.DataGridModel;
import com.lh.tams.util.Page;

/**
 * 角色管理DAO
 * @author liulin
 * @version 2012-05-19
 */
@Repository
public class RoleDao extends HibernateBaseDao{
	
	/**
	 * 分页查询
	 * @param dgm
	 * @param tamsPerson
	 * @return
	 */
	public Page query(DataGridModel dgm){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsRole tr");
		return super.queryForList(hql.toString(), args.toArray(), dgm.getPage(), dgm.getRows());
	}
	/**
	 * 查询角色名称的角色是否存在
	 * @param roleName
	 * @param id
	 * @return
	 */
	public boolean query(String roleName,long id){
		String hql="from TamsRole t where t.roleName=? and t.idBgt!=?";
		List<TamsRole> list= getHibernateTemplate().find(hql, new Object[]{roleName,id});
		if(list.size()>0)
			return true;
		return false;
	}
	
	/**
	 * 根据角色查询所有警员
	 * @param id
	 * @return
	 */
	public List<TamsPerson> queryPersonIdByRole(long id){
		String hql="from TamsPerson t where t.tamsRole.idBgt=?";
		List<TamsPerson> list= getHibernateTemplate().find(hql, new Object[]{id});
		return list;
	}
	
	public TamsRole load(long roleId){
		return getHibernateTemplate().load(TamsRole.class, roleId);
	}
	
	/**
	 * 分页查询
	 * @param dgm
	 * @param role
	 * @return
	 */
	public Page query(DataGridModel dgm,TamsRole role){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsRole tr where 1=1");
		if(role.getRoleName()!=null&&!"".equals(role.getRoleName())){
			hql.append(" and tr.roleName like ?");
			args.add("%"+role.getRoleName()+"%");
		}
		return super.queryForList(hql.toString(), args.toArray(), dgm.getPage(), dgm.getRows());
	}
	
	/**
	 * 新增角色
	 * @param tamsRole
	 */
	public void add(TamsRole tamsRole){
		super.add(tamsRole);
	}
	
	/**
	 * 修改角色
	 * @param tamsRole
	 */
	public void update(TamsRole tamsRole){
		super.update(tamsRole);
	}
	
	/**
	 * 批量删除
	 * @param ids
	 */
	public void delete(long[] ids){
		super.delete("TAMS_ROLE", ids);
	}
	
}
